home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 201-225 / 201 / draco / src / fastsieve.d < prev    next >
Text File  |  1995-03-13  |  714b  |  35 lines

  1. /* Eratosthenes Sieve Prime Number Program in Draco */
  2.  
  3. int
  4.     SIZE = 8190,
  5.     ITERATIONS = 100;
  6.  
  7. proc main()void:
  8.     [SIZE + 1] bool flags;
  9.     register *[SIZE + 1] bool array;
  10.     register *bool p;
  11.     unsigned ITERATIONS iter;
  12.     register uint k, i, count, prime;
  13.  
  14.     writeln(ITERATIONS, " iterations.");
  15.     array := &flags;
  16.     for iter from 1 upto ITERATIONS do
  17.     count := 0;
  18.     p := &array*[0];
  19.     for i from SIZE downto 0 do
  20.         p* := true;
  21.         p := p + sizeof(bool);
  22.     od;
  23.     for i from 0 upto SIZE do
  24.         if array*[i] then
  25.         prime := 2 * i + 3;
  26.         for k from i + prime by prime upto SIZE do
  27.             array*[k] := false;
  28.         od;
  29.         count := count + 1;
  30.         fi;
  31.     od;
  32.     od;
  33.     writeln(count, " primes.");
  34. corp;
  35.